1. Field of the Invention
The present invention relates generally to management of resources within a computing system and, more particularly, managing access to a resource to provide a guaranteed availability while maintaining high utilization of the resources.
2. Description of the Related Art
Within a given computer architecture, such as a Broadband Engine or a large SMP system, there exists a finite number of resources, such as processors, memory, I/O devices and interconnect buses that are available for use. In the current art resource management systems such as operating systems, hypervisors or virtual machine layers allocate processors, memory and I/O devices to specific tasks for specific periods of time, typically using a time-sliced approach based on task priorities and resource requirements. However, these management systems do not actively manage the interconnect buses that connect and provide access to the resources. This lack of bus resource management can significantly limit the capability to provide a “guaranteed” utilization of a resource during a specific period of time due to delay of access, particularly where there are multiple processors, memory and I/O devices sharing common buses concurrently executing multiple tasks. For instance, in a case where there are two tasks concurrently running on two different processors, accessing two different banks of memory, one tasks completion time can be adversely affected by the bus utilization and access patterns of the second task, even though to the resource management facility, both tasks have dedicated processor and memory resources. Techniques such as dropping packets of information and retrying operations are typically used for management of over committed resources in networking applications. However, these techniques do not work in systems having time critical tasks because of the retry delays and inherent inefficiencies.
Time slicing and partitioning of processors, I/O and memory with priority arbitration schemes lack access controls for the resources needed for real-time applications and usage when there are a plurality of these resources attached to shared buses. Essentially, applications or tasks can easily congest a bus or a memory leading to stalls, retires, long lag times, and overall poor performance even though the management system properly provided the processor, memory or I/O resource to the task. Some of the major problems as a result of applications or tasks overrunning a system are bottlenecks and denial of service. A scheme, which allocates the bus for a task at a specific time, typically provides very poor overall utilization of system resources thus introducing considerable inefficiency.
Therefore, there is a need for a method and/or apparatus for controlling the usage and access to resources in a system executing concurrent tasks which addresses the problem of resource access using shared resources that addresses at least some of the problems associated with conventional methods and apparatuses for controlling usage and access to resources in a system executing concurrent tasks.